package self.zhangkang.chart.view.kline

import android.content.Context
import androidx.annotation.ColorInt
import androidx.core.content.ContextCompat
import self.zhangkang.chart.R

/**
 * @author : Android-张康
 * created on: 2023/5/5 10:47
 * description: K线中需要使用的颜色
 */
class KLineViewColor(context: Context) {

    /**
     * 线的颜色
     */
    val borderLineColor = ContextCompat.getColor(context, R.color._FFDDDDDD)


    /**
     * 虚线的颜色
     */
    val dashLineColor = ContextCompat.getColor(context, R.color._FFDEDEDE)

    /**
     * 线的颜色
     */
    val borderLineLineColor = ContextCompat.getColor(context, R.color.stock_FFE5E8ED)

    /**
     * 坐标的文字颜色
     */
    val ordinateTextColor = ContextCompat.getColor(context, R.color.stock_FF999999)

    /**
     * 涨的颜色
     */
    val redColor = ContextCompat.getColor(context, R.color.stock_k_line_red)

    /**
     * 跌的颜色
     */
    val greenColor = ContextCompat.getColor(context, R.color.stock_k_line_green)

    /**
     * 平的颜色
     */
    val grayColor = ContextCompat.getColor(context, R.color.stock_k_line_gray)

    /**
     * 高亮线的颜色
     */
    val highlightLineColor = ContextCompat.getColor(context, R.color._FF4D4D4D)

    /**
     * 高亮文字的颜色
     */
    val highlightLineTextColor = ContextCompat.getColor(context, R.color.white)

    /**
     * 高亮文字的背景颜色
     */
    val highlightLineBgColor = ContextCompat.getColor(context, R.color._FF279AF9)

    /**
     * 最高价或最低价价格的颜色
     */
    val maxOrMinPriceTextColor =
        ContextCompat.getColor(context, R.color.stock_k_line_max_or_min_price_text_color)

    /**
     * 除权标识
     */
    val adjustColor = ContextCompat.getColor(context, R.color.stock_k_line_adjust)

    /**
     * K线为线时的颜色
     */
    val kLineIsLineColor = ContextCompat.getColor(context, R.color.stock_k_line_is_line)

    /**
     * 日期文字颜色
     */
    val dateTextColor = ContextCompat.getColor(context, R.color._FF999999)

    val valueTextColor = ContextCompat.getColor(context, R.color._FF323232)

    /**
     * MA 相关的颜色
     */
    val ma5Color = ContextCompat.getColor(context, R.color._FFF7A636)
    val ma10Color = ContextCompat.getColor(context, R.color._FF4F92EC)
    val ma20Color = ContextCompat.getColor(context, R.color._FFED8BE3)
    val ma60Color = ContextCompat.getColor(context, R.color._FF3ECC8E)

    /**
     * 布林线相关的颜色
     */
    val bollUpperColor = ContextCompat.getColor(context, R.color._FFF7A636)
    val bollBollColor = ContextCompat.getColor(context, R.color._FF4F92EC)
    val bollLowerColor = ContextCompat.getColor(context, R.color._FFED8BE3)

    /**
     * CYC 相关的颜色
     */
    val cycShortColor = ContextCompat.getColor(context, R.color._FFF7A636)
    val cycMiddleColor = ContextCompat.getColor(context, R.color._FF4F92EC)
    val cycLongColor = ContextCompat.getColor(context, R.color._FFED8BE3)
    val cycInfiniteColor = ContextCompat.getColor(context, R.color._FF3ECC8E)

    /**
     * KDJ 相关的颜色
     */
    val kdjKColor = ContextCompat.getColor(context, R.color._FFF7A636)
    val kdjDColor = ContextCompat.getColor(context, R.color._FF4F92EC)
    val kdjJColor = ContextCompat.getColor(context, R.color._FFED8BE3)

    /**
     * MACD 相关的颜色
     */
    val macdDIFColor = ContextCompat.getColor(context, R.color._FFF7A636)
    val macdDEAColor = ContextCompat.getColor(context, R.color._FF4F92EC)

    /**
     * CCI 相关的颜色
     */
    val cciColor = ContextCompat.getColor(context, R.color._FFF7A636)

    /**
     * WR 相关的颜色
     */
    val wr1Color = ContextCompat.getColor(context, R.color._FFF7A636)
    val wr2Color = ContextCompat.getColor(context, R.color._FF4F92EC)

    /**
     * BIAS 相关的颜色
     */
    val bias6Color = ContextCompat.getColor(context, R.color._FFF7A636)
    val bias12Color = ContextCompat.getColor(context, R.color._FF4F92EC)
    val bias24Color = ContextCompat.getColor(context, R.color._FFED8BE3)

    /**
     * RSI 相关的颜色
     */
    val rsi6Color = ContextCompat.getColor(context, R.color._FFF7A636)
    val rsi12Color = ContextCompat.getColor(context, R.color._FF4F92EC)
    val rsi24Color = ContextCompat.getColor(context, R.color._FFED8BE3)

    /**
     * 根据值获取颜色
     *
     * @param value 值
     *
     * @return 大于 0 涨的颜色，小于 0 跌的颜色，等于 0 平的颜色
     */
    @ColorInt
    fun getColorByValue(value: Float): Int {
        return if (value > 0) {
            redColor
        } else if (value < 0) {
            greenColor
        } else {
            grayColor
        }
    }
}